1.
原式中已知两点都是位于交点的两侧
这样也就求出了最后的结果
2.
这里Dot(n, face[0]) - c得到的方程式其实并不是将face[0]代入到ax+by+c中
而是代入到于ax+by+c垂直的真实裁剪线中去的
这里有多重方法可以证明 因为两种Clip情况都相似 所以只取一种情况予以证明
(1).
n=(x1−x2,y1−y2)c=−[x1.(x2−x1)+y1.(y2−y1)]
n.(x,y)−c=(x1−x2).x+(y1−y2).y+x1.(x2−x1)+y1.(y2−y1)=(x2−x1).(x−x1)+(y2−y1).(y−y1)
这个式子是两个向量的点积
这里的几何意义就表明
(2).上一则方法是一步步推导实现的
第二种方法是直接给出这条真实裁剪线的方程 因为垂直 所以斜率乘积为-1
已知直线斜率为 k=−ba
那么所求直线斜率为 k=ab 并且过(x1,y1) (两点式已知a = y2 - y1, b = x1 - x2
可得 k.x+y1−k.x1=y
最终式子为
(x1−x2).x+y1.(y2−y1)−(x1−x2).x1=y.(y2−y1)
(x1−x2).(x−x1)=(y−y1)(y2−y1)也就是第一种情况中所求得的式子 可以证明得到Dot(n, face[0]) - c得到的方程式的的确确就是垂直于已知直线并且过(x1,y1)点的直线
2.
在最后计算深度的时候需要注意到的是倘若clip计算出来的边长都在reference face内部 那么两点都为contact point